﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ED_Nivelacion.Datos;

namespace ED_Nivelacion.Negocios
{
    public class CriterioEvaluacion_C
    {
        ED_NivelacionEntities _objEntity = new ED_NivelacionEntities();


        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public List<CriterioEvaluacion> ObtenerCriterio()
        {
            List<CriterioEvaluacion> ListaCriterio = new List<CriterioEvaluacion>();
            try
            {
                foreach (var item in _objEntity.SP_ConsultarCriterio_Evaluacion())
                {
                    ListaCriterio.Add(new CriterioEvaluacion { idCriterio_Evaluacion = item.idCriterio_Evaluacion, Criterio = item.Criterio, Valoracion = (int)item.Valoracion});
                }
                return ListaCriterio;
            }
            catch (Exception)
            {

                return ListaCriterio;
            }


        }

        public List<CriterioEvaluacion> FiltrarCriterios(string _Actor)
        {
            List<CriterioEvaluacion> ListaCriterio = new List<CriterioEvaluacion>();
            try
            {
                foreach (var item in _objEntity.SP_ObtenerCriterios(_Actor))
                {
                    ListaCriterio.Add(new CriterioEvaluacion { idCriterio_Evaluacion = item.idCriterio_Evaluacion, Criterio = item.Criterio });
                }
                return ListaCriterio;
            }
            catch (Exception)
            {
                return ListaCriterio;
            }
        }

        public List<CriterioEvaluacion> FiltrarCriteriosId(int _idCriterio_Evaluacion)
        {
            List<CriterioEvaluacion> ListaCriterio = new List<CriterioEvaluacion>();
            try
            {
                var item = _objEntity.SP_FiltrarCriterioId(_idCriterio_Evaluacion).FirstOrDefault();

                ListaCriterio.Add(new CriterioEvaluacion { idCriterio_Evaluacion = item.idCriterio_Evaluacion, Criterio = item.Criterio, Valoracion = (int)item.Valoracion });

                return ListaCriterio;
            }
            catch (Exception)
            {
                return ListaCriterio;
            }
        }

        public string AgregarCriterioEvaluacion(CriterioEvaluacion _obj)
        {
            bool flag = true;
            string msm = "OK";
            var n = _objEntity.SP_ConsultarCriterio_Evaluacion();

            string texto1 = _obj.Criterio;
            texto1 = texto1.Replace(" ", "");
            texto1 = texto1.ToLower();

            foreach (var item in n)
            {
                string texto = item.Criterio;
                texto = texto.Replace(" ", "");
                texto = texto.ToLower();
                if (texto1 == texto) 
                {
                    flag = false;
                    break;
                }
            }


            try
            {
                if (flag==true)
                {
                    _objEntity.SP_InsertarCriterio_Evaluacion(_obj.Criterio, _obj.Valoracion);

                }
                else {
                    msm = "Criterio ya fue ingresado";
                }
            }
            catch (Exception)
            {

                msm = "Error al ingresar criterio";
            }

            return msm;

        }

        public string EditarCriterioEvaluacion(CriterioEvaluacion _obj)
        {
            string msm = "OK";
            try
            {
                _objEntity.SP_ActualizarCriterio_Evaluacion(_obj.idCriterio_Evaluacion,_obj.Criterio, _obj.Valoracion);
            }
            catch (Exception)
            {

                msm = "Error al actualizar";
            }

            return msm;
        }

        public string EliminarCriterioEvaluacion(int _idCriterio_Evaluacion)
        {
            string msm = "OK";
            try
            {
                _objEntity.SP_EliminarCriterio_Evaluacion(_idCriterio_Evaluacion);
            }
            catch (Exception)
            {

                msm = "Error al Eliminar";
            }

            return msm;
        }

        public void FiltrarCriterios(int p)
        {
            throw new NotImplementedException();
        }
    }
}
